package com.nclg.exam.utils;

import org.apache.shiro.crypto.hash.SimpleHash;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

public class MD5Utils {

    /**
     * 密码加密
     * @param password
     * @return
     */
    public static String encrypt(String password, String salt){
        SimpleHash md5 = new SimpleHash("MD5",   //加密算法
                password,      //要加密的密码
                salt,    //盐值
                1024);  //加密次数
        return String.valueOf(md5);
    }

    /**
     * 返回密码与盐值
     * @param password
     * @return
     */
    public static Map<String, String> md5(String password){
        //生成盐值
        String salt = UUID.randomUUID().toString().replace("-","");

        String pwd = encrypt(password, salt);
        Map<String, String> map = new HashMap<>();
        map.put("password", pwd);
        map.put("salt", salt);
        return map;
    }

    /**
     * 校验密码是否正确
     * @param password
     * @return
     */
    public static boolean checkPwd(String oldPwd, String password, String salt){
        return encrypt(oldPwd, salt).equals(password);
    }
}
